1. Field of the Invention
The present invention relates generally to a method that establishes a correct combination of different hardware and software entities necessary for the reliable operation of a computer system and more particularly to a method for resolving dependency conflicts across diverse sets of functional entities while installing or removing specific operative elements in a computing environment.
2. Discussion of Related Art
Computing environments include hardware components and software components. The components are divided into various types: processor devices, disk devices, printer devices, software packages, software libraries, kernel bases, kernel parameters, kernel modules, drivers, configuration files, flags, application packages and the like. The software elements also referred to as modules, or programs, comprise a multitude of executable instructions in hardware-readable format. The components have diverse functionality or applications. Hardware devices are analog interfaces to the real world and perform physical work such as switching electronic circuits, transmitting electrical signals, magnetizing coils, pressing ink into paper surfaces, and the like while software modules operate in a digital mode and control both the operation of the hardware devices, the operation of other software modules in a preset manner, supply various services involving data manipulation and computation by receiving, processing, transforming and outputting information units in a predefined manner. System software modules, such as kernel modules, supervise, manage and control the operations of the computing environment in its entirety.
Typically in a computing environment various hardware and software entities operate in close co-operation. Therefore, within a typical computing environment a plurality of hardware and software entities have multiple dependency relationships with a plurality of other hardware and software entities. Such a dependency relationship could be defined as follows: in an exemplary computing environment for component xe2x80x9cAxe2x80x9d perform correctly, component xe2x80x9cBxe2x80x9d and component xe2x80x9cCxe2x80x9d are both needed. Therefore, in the exemplary computing environment, such as an operating system platform, the utilization of component xe2x80x98Axe2x80x99 necessitates the presence of component xe2x80x9cBxe2x80x9d and the presence of component xe2x80x98Cxe2x80x99.
Computer systems are practically never static. Frequently changes have to be made. Changing requirements of the environment necessitates the addition and/or replacement of hardware devices or software modules thereby inducing the addition and/or replacement of other software modules. Improved versions of present devices or modules effect the replacement of older versions thereof. New, state-of-art software packages are installed repeatedly in a dynamic process of development and growth. Modifying a computer system typically involves installation or removal of hardware devices or software modulesxe2x80x94a process referred to as upgrading the system. When performing the predefined procedures necessary for an upgrade to be implemented frequently dependency conflicts may arise among the components present and the components to be installed. Such dependency conflicts turn the upgrading process into a complicated, prolonged, difficult, and sometimes unsuccessful operation.
Conventionally, users utilizing specific installation utilities perform the installation and the update of components. The majority of utilities operate in a basic fashion; installable components are installed, replacing, if necessary, present components, no dependency checks are made therefore, no attempts are made to solve the dependency conflicts.
Some more advanced utilities perform dependency checks, typically abort the installation process when required and also inform the users in regard to the conflicts but make no attempts to solve the related problem.
It will be obvious to those skilled in the art that there is a long felt need for a comprehensive, totally automated installation utility to assist users of small and medium-size computer system platforms in the exacting task of managing complex and dynamically evolving computing systems. Specifically, there is an urgent need for an effective installation utility designed to resolve automatically inter-component dependency conflicts so as to enable routinely the accomplishment of fast, solid, efficient and convenient computer system upgrades.
One aspect of the present invention regards a method of assisting users of computer client systems in the conduct of an upgrade of a computer system, having a central processing unit, a storage device and a communication device, by automatically establishing an operatively correct combination of a set of components in the computing environment of the computer system. The method includes obtaining at least one control table from a storage device, the at least one control table having a first set of information regarding a set of possible components to be used in the computer environment of the computer system and setting up at least one result table on the storage device, the at least one result table holding a second set of information resulting from automatically establishing an operatively correct combination of two or more components within the set of possible components. Examining the at least one control table for dependency conflicts arising among the set of possible components in the at least one control table and identifying the dependency conflicts arising among the set of possible components in the at least one control table. Resolving the dependency conflicts among the set of possible components in the at least one control table and creating result-related actions based on the resolving.
The above aspect of the present invention overcomes the disadvantages of the prior art by providing a novel method and a system to dependency relationship analysis and to dependency conflict resolving among multiple sets of hardware and software components in a computing environment.
The above aspect of the present invention provides a conflict resolving mechanism implemented as a software program that associates lists of installed components with lists of components to be installed, removed or updated. By utilizing a set of related predetermined dependency rules pertaining to both component lists the dependency conflict resolving module resolves existing conflicts among the hardware and software components and guides the user through a sequence of appropriate actions. Consequently, the user can utilize the information so obtained in a useful manner such as performing one or more recommended installation procedures in order to accomplish a successful system upgrade.
The present invention will be understood and appreciated more fully from the following detailed description taken in conjunction with the drawings in which: